import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../modules/auth/controllers/auth_controller.dart';
import '../services/token_service.dart';
import '../routes/app_routes.dart';

/// 认证中间件
/// 用于处理认证状态检查和控制器依赖注入
class AuthMiddleware extends GetMiddleware {
  // 优先级，数字越小越先执行
  @override
  int? get priority => 1;

  // 路由重定向
  @override
  RouteSettings? redirect(String? route) {
    final tokenService = Get.find<TokenService>();
    
    // 检查是否已登录
    if (!tokenService.isLoggedIn() && 
        route != Routes.login) {
      // 未登录，重定向到登录页
      return const RouteSettings(name: Routes.login);
    }

    // 如果已登录且访问登录页，重定向到首页
    if (tokenService.isLoggedIn() && 
        route == Routes.login) {
      return const RouteSettings(name: Routes.home);
    }

    return null; // 不重定向
  }

  // 在页面绑定之前，确保控制器先被注册
  @override
  List<Bindings>? onBindingsStart(List<Bindings>? bindings) {
    if (!Get.isRegistered<AuthController>()) {
      Get.put(AuthController(), permanent: true);
    }
    return bindings;
  }
} 